﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;


namespace Torpedo
{
    class Program
    {
        #region adattagok

        private static Főablak példányosítottFőablak;
            internal const uint SC_CLOSE = 0xF060;
            internal const uint MF_GRAYED = 0x00000001;
            internal const uint MF_BYCOMMAND = 0x00000000;
            const int SWP_NOSIZE = 0x0001;


        #endregion adattagok

        #region Dllimport

            //Console bezárás bezásásának tiltásához
            [DllImport("user32.dll")]
            static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);

            [DllImport("user32.dll")]
            static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

            [DllImport("user32.dll")]
            static extern IntPtr RemoveMenu(IntPtr hMenu, uint nPosition, uint wFlags);

            [DllImport("user32.dll", EntryPoint = "SetWindowPos")]
            public static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);

            [DllImport("kernel32.dll", SetLastError = true)]
            public static extern IntPtr GetConsoleWindow();

            


        #endregion Dllimport

        #region metódusok

            [STAThread]
            //a program belépési pontja itt van
            static void Main(string[] args)
            {
                //title módosítás, sor, oszlop buffer, pozíció beállítása
                Console.Title = Properties.Resources.DEBUG_CONSOLE_TITLE;
                Console.SetWindowSize(Properties.Settings.Default.Konzol_méret_x, Properties.Settings.Default.Konzol_méret_y);
                Console.BufferHeight = Properties.Settings.Default.Konzol_buffer_y;
                Console.BufferWidth = Properties.Settings.Default.Konzol_buffer_x;

                IntPtr DebugConsoleWindow = GetConsoleWindow();
                SetWindowPos(DebugConsoleWindow, 0, Properties.Settings.Default.Konzol_poz_x, Properties.Settings.Default.Konzol_poz_y, 0, 0, SWP_NOSIZE);

                //Console bezárás letiltás
                IntPtr hMenu = Process.GetCurrentProcess().MainWindowHandle;
                IntPtr hSystemMenu = GetSystemMenu(hMenu, false);

                EnableMenuItem(hSystemMenu, SC_CLOSE, MF_GRAYED);
                RemoveMenu(hSystemMenu, SC_CLOSE, MF_BYCOMMAND); 

                //debug konzolra írunk
                Console.WriteLine(Properties.Resources.PROGRAM_START);

                //a debug konzol jól jöhet még, ha ide majd a program működése szempontjából érdekes
                //dolgokat ki akarunk írni

                //megjelenítjük a főablakot
                példányosítottFőablak = new Főablak();
                példányosítottFőablak.ShowDialog();

                //debug konzolra írunk
                Console.WriteLine(Properties.Resources.PROGRAM_STOP);
            }

        #endregion metódusok
    }
}
